﻿using Persistencia;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dlls
{
    public class GrupoPessoasDLL
    {
        private Context context;

        public GrupoPessoasDLL()
        {
            context = new Context();    
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoGrupo"></param>
        /// <returns></returns>
        public IEnumerable<GrupoPessoa> List() 
        {
            return (from o in context.GrupoDePessoas select o).ToList();
        }

        public void Insert(GrupoPessoa grupoPessoa) 
        {
            context.GrupoDePessoas.InsertOnSubmit(grupoPessoa);
            context.SubmitChanges();
        }

        public void Update(int codigo, GrupoPessoa grupoPessoa) 
        {
            GrupoPessoa obj = context.GrupoDePessoas.SingleOrDefault(o => o.Codigo == codigo);
            obj.Nome = grupoPessoa.Nome;
            obj.LimiteCredito = grupoPessoa.LimiteCredito;
            obj.Comissao = grupoPessoa.Comissao;

            context.SubmitChanges();
        }

        public void Delete(GrupoPessoa grupoPessoa) 
        {
            context.GrupoDePessoas.DeleteOnSubmit(grupoPessoa);
            context.SubmitChanges();
        }

        public GrupoPessoa getCodigoPorNomeGrupo(string nomeGrupo)
        {
            return context.GrupoDePessoas.SingleOrDefault(e => e.Nome == nomeGrupo );
        }

        public GrupoPessoa getGrupoPessoa(int codigo)
        {
            return context.GrupoDePessoas.SingleOrDefault(e => e.Codigo == codigo);
        }

    }

    public class GrupoProdutoDLL
    {
        private Context context;

        public GrupoProdutoDLL()
        {
            context = new Context();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoGrupo"></param>
        /// <returns></returns>
        public IEnumerable<GrupoProduto> List()
        {
            return (from o in context.GrupoDeProdutos select o).ToList();
        }

        public void Insert(GrupoProduto grupoProduto)
        {
            context.GrupoDeProdutos.InsertOnSubmit(grupoProduto);
            context.SubmitChanges();
        }

        public void Update(int codigo, GrupoProduto grupoProduto)
        {
            GrupoProduto obj = context.GrupoDeProdutos.SingleOrDefault(o => o.Codigo == codigo);
            obj.Nome = grupoProduto.Nome;
            obj.Comissao = grupoProduto.Comissao;

            context.SubmitChanges();
        }

        public void Delete(GrupoProduto grupoProduto)
        {
            context.GrupoDeProdutos.DeleteOnSubmit(grupoProduto);
            context.SubmitChanges();
        }

        public GrupoProduto getCodigoPorNomeGrupo(string nomeGrupo) 
        {
            return context.GrupoDeProdutos.SingleOrDefault(e => e.Nome == nomeGrupo);
        }

        public GrupoProduto getGrupoProduto(int codigo)
        {
            return context.GrupoDeProdutos.SingleOrDefault(e => e.Codigo == codigo);
        }
    }
}
